package com.jzx.dao;

import com.jzx.bean.UserMessage;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

/**
 * @author JunedQQ
 * @create 2019/6/29
 * @since 1.0.0
 */
@Repository
public interface UserMessageDao {

    /**
     * 根据id来获取用户信息
     * @param id
     * @return
     */
    @Select("select * from user_message where id = #{id}")
    UserMessage getUserMessageById(String id);

    /**
     * 根据用户id来获取用户信息
     * @param userId
     * @return
     */
    @Select("select * from user_message where userid = #{userId}")
    UserMessage getUserMessageByUserId(String userId);

    /**
     * 根据id来更改id所对应的用户email
     * @param id
     * @param newEmail
     * @return
     */
    @Update("update user_message set email = #{newEmail} where id = #{id}")
    int updateUserMessageEmailById(@Param("id") String id,@Param("newEmail") String newEmail);

    /**
     * 根据用户id来更改用户id所对应的用户email
     * @param userId
     * @param newEmail
     * @return
     */
    @Update("update user_message set email = #{newEmail} where userid = #{userId}")
    int updateUserMessageEmailByUserId(@Param("userId") String userId,@Param("newEmail") String newEmail);

    /**
     * 根据id来更改id所对应的的昵称
     * @param id
     * @param newNickName
     * @return
     */
    @Update("update user_message set nickname = #{newNickName} where id = #{id}")
    int updateUserMessageNickNameById(@Param("id") String id,@Param("newNickName") String newNickName);

    /**
     * 根据用户id来更改用户id所对应的昵称
     * @param userId
     * @param newNickName
     * @return
     */
    @Update("update user_message set nickname = #{newNickName} where userid = #{userId}")
    int updateUserMessageNickNameByUserId(@Param("userId") String userId,@Param("newNickName") String newNickName);

    /**
     * 根据id来更改id所对应的的个性签名
     * @param id
     * @param newSignature
     * @return
     */
    @Update("update user_message set signature = #{newSignature} where id = #{id}")
    int updateUserMessageSignatureById(@Param("id") String id,@Param("newSignature") String newSignature);

    /**
     * 根据用户id来更改用户id所对应的个性签名
     * @param userId
     * @param newSignature
     * @return
     */
    @Update("update user_message set signature = #{newSignature} where userid = #{userId}")
    int updateUserMessageSignatureByUserId(@Param("userId") String userId,@Param("newSignature") String newSignature);

    /**
     * 根据id更改id所对应的的性别
     * @param id
     * @param sex
     * @return
     */
    @Update("update user_message set sex = #{sex} where id = #{id}")
    int updateUserMessageSexById(@Param("id") String id,@Param("sex") String sex);

    /**
     * 根据用户id来更改用户id对应的性别
     * @param userId
     * @param sex
     * @return
     */
    @Update("update user_message set sex= #{sex} where userid = #{userId}")
    int updateUserMessageSexByUserId(@Param("userId") String userId,@Param("sex") String sex);

    /**
     * 增加一行用户信息
     * @param userMessage
     * @return
     */
    @Insert("insert into user_message(userid,nickname,signature) values(#{userMessage.userId},#{userMessage.nickName},#{userMessage.signature})")
    int addUserMessage(UserMessage userMessage);

    /**
     * 根据id来删除id所对应的所有用户信息
     * @param id
     * @return
     */
    @Delete("delete  from user_message where id = #{id}")
    int deleteUserMessageById(String id);

    /**
     * 根据用户id来删除用户id所对应的所有用户信息
     * @param userId
     * @return
     */
    @Delete("delete from user_message where userid = #{userId}")
    int deleteUserMessageByUserId(String userId);
}